package org.jeecg.modules.business.entity;

import java.io.Serializable;
import java.util.Date;
import java.math.BigDecimal;
import java.util.List;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.jeecg.modules.business.vo.BusOrderFeeGoodsVo;
import org.jeecg.modules.rooms.entity.CesHouseLongRentMeterLog;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * @Description: bus_order_fee
 * @Author: jeecg-boot
 * @Date:   2023-04-08
 * @Version: V1.0
 */
@Data
@TableName("bus_order_fee")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="bus_order_fee对象", description="bus_order_fee")
public class BusOrderFee implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * key
     */
    @TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "key")
    private String id;
    /**
     * 入住订单id
     */
    @Excel(name = "入住订单id", width = 15)
    @ApiModelProperty(value = "入住订单id")
    private String livingOrderId;
    /**
     * 房间id
     */
    @Excel(name = "房间id", width = 15)
    @ApiModelProperty(value = "房间id")
    private String roomId;
    /**
     * 消费金额
     */
    @Excel(name = "消费金额", width = 15)
    @ApiModelProperty(value = "消费金额")
    private BigDecimal money;
    /**
     * 账单类型1消费。2收款
     */
    @Excel(name = "账单类型1消费。2收款", width = 15)
    @ApiModelProperty(value = "账单类型1消费。2收款")
    private Integer feeType;
    /**
     * 收费项目说明
     */
    @Excel(name = "收费项目说明", width = 15)
    @ApiModelProperty(value = "收费项目说明")
    private Integer subjectType;
    /**
     * 付款方式
     */
    @Excel(name = "付款方式", width = 15)
    @ApiModelProperty(value = "付款方式")
    private String payType;
    /**
     * 备注
     */
    @Excel(name = "备注", width = 15)
    @ApiModelProperty(value = "备注")
    private String remark;
    /**
     * 客单备注
     */
    @Excel(name = "客单备注", width = 15)
    @ApiModelProperty(value = "客单备注")
    private String custorerOrderRemark;
    /**
     * 创建时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "创建时间")
    private Date createTime;
    /**
     * 营业日
     */
    @Excel(name = "营业日", width = 15, format = "yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "营业日")
    private Date dayTime;
    /**
     * 收款账单有该记录，id为消费账单id
     */
    @Excel(name = "收款账单有该记录，id为消费账单id", width = 15)
    @ApiModelProperty(value = "收款账单有该记录，id为消费账单id")
    private String consumeFeeId;
    /**
     * 收款时间
     */
    @Excel(name = "收款时间", width = 15, format = "yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "收款时间")
    private Date payTime;

    // 以下的内容只会出现在优惠的账单里面
    @ApiModelProperty(value = "是否优惠")
    private Boolean isPreferential;
    @ApiModelProperty(value = "优惠类型：1抹零2减现3打折  折扣率自动根据优惠金额计算")
    private Integer preferentialType;
    @ApiModelProperty(value = "优惠金额")
    private BigDecimal preferentialMoney;
    @ApiModelProperty(value = "是否使用优惠券")
    private Boolean allowCouponscash;
    @ApiModelProperty(value = "是否使用优惠券")
    private String couponscashId;
    @ApiModelProperty(value = "付款人ID")
    private String contactId;
    @ApiModelProperty(value = "结账状态，1未结账2已结账")
    private Integer preferentialStatus;
    @ApiModelProperty(value = "会员卡结费ID")
    private String vipCardId;
    @ApiModelProperty(value = "酒店Id")
    private String hotelId;
    @ApiModelProperty(value = "协议单位ID")
    private String agreementUnitId;

    private String returnFeeId;
    private Boolean returnItem;
    @ApiModelProperty(value = "商品冲账数量")
    private Integer returnNum;
    @ApiModelProperty(value = "预定id")
    private String bookingOrderId;
    @ApiModelProperty(value = "预定押金")
    private Boolean bookingYj;
    @ApiModelProperty(value = "是超时费用")
    private Boolean isOverTime;
    @ApiModelProperty(value = "是最终结账")
    private Boolean isSettleFee;


    @ApiModelProperty(value = "每天价格")
    @TableField(exist = false)
    private List<BusLivingLayoutDayPrice> prices;
//    @ApiModelProperty(value = "关联商品信息")
//    @TableField(exist = false)
//    private List<BusOrderFeeGoods> feeGoods;
    @TableField(exist = false)
    @ApiModelProperty(value = "关联商品信息")
    private BusOrderFeeGoodsVo feeGoodVo;
    @TableField(exist = false)
    @ApiModelProperty(value = "关联商品信息")
    private CesHouseLongRentMeterLog longRentMeterLog;

    @TableField(exist = false)
    @ApiModelProperty(value = "原价")
    private BigDecimal originalMoney;

}
